#pragma once

#include "common/hash_util.h"
#include "common/macros.h"
extern "C" {
#include <postgres.h>

#include <nodes/bitmapset.h>
#include <nodes/nodes.h>
#include <nodes/primnodes.h>
}

namespace optimizer {

class NodeUtils {
 public:
  DISALLOW_INSTANTIATION(NodeUtils);
  DISALLOW_COPY_AND_MOVE(NodeUtils);

  // hash functions
  static hash_t ExprHash(const void *expr);

  static std::string ToString(const void *expr);
};

}  // namespace optimizer